Я надеюсь, что эта статья спасет всех, кому нужно передавать данные из отдела продаж в MySQL без внешних соединителей, потому что ваше начальство просит вас об этом. Я сам долго страдал, прежде чем нашел простой способ сделать это, так что поехали!
Что вам нужно
- Учетная запись Salesforce Lightning (и некоторые знания об объекте salesforce)
- Учетные данные MySQL
- jsforce установлен с использованием npm (и некоторые знания node.js)
- Хороший редактор кода (:
Не волнуйтесь, я вместе с вами пройдусь по частям!
1. Аккаунт Salesforce Lightning
Итак, если вы еще не знаете, Salesforce сохраняет такие элементы, как счета, дела, в объекты. Объекты состоят из поля и имеют тип для каждого поля. Что мы собираемся сделать сегодня, так это импортировать все данные учетных записей в MySQL.
Получите токен безопасности
Маркер безопасности позже понадобится для подключения к Salesforce с помощью node.js.
Теперь, когда эта часть сделана, перейдем к mySQL.
2. Учетные данные MySQL
Если вы сейчас используете mySQL, вы будете знать, что есть имя пользователя и пароль, а также хост. Таким образом, вам понадобится эта информация для подключения к вашей учетной записи + базе данных, к которой вы хотите подключиться.
Вам нужно будет зайти в MySQL, щелкнуть по базе данных
Затем в раскрывающемся списке вы нажимаете на управление подключениями.
для просмотра параметров подключения.
Теперь давайте создадим новую базу данных test_db, используя «create database test_db», а затем «создадим значения таблицы test_table (где мы будем хранить test_table для загрузки данных Salesforce.
3. Скрипт Node js
Создайте каталог по вашему выбору и выполните npm init, чтобы настроить все необходимые файлы. Вам необходимо установить npm, если у вас его нет!
Теперь создайте файл config.js, чтобы ввести эти учетные данные.
После этого мы установим jsforce с помощью nps install jsforce.
Теперь давайте проведем тестовое подключение к jsforce.
На основе документации с использованием conn.login, conn.login (имя пользователя, пароль + токен безопасности salesforce). После этого вы не сможете получить код ошибки (:
Пришло время собрать все воедино. Идея состоит в том, что мы хотим сначала подключиться к mySQL и убедиться, что он подключен. Затем мы подключимся к salesforce и будем использовать оболочку jsforce для запроса данных, например, с помощью языка SQL, а затем импортировать их в mySQL (:
var jsforce = require('jsforce') var connection = require('./config.js') connection.connect(function (err) { if (err) { return console.error('error:' + err.message); } //console.log('Connected to MySQL'); var conn = new jsforce.Connection({ }); // password + security token conn.login('<login email>', '<password + security token>', function (err, userInfo) { if (err) { return console.error(err); } // Now you can get the access token and instance URL information. // Save them to establish connection next time. //console.log(conn.accessToken); //console.log(conn.instanceUrl); // logged in user property //console.log("User ID: " + userInfo.id); //console.log("Org ID: " + userInfo.organizationId); var records = [] var query = conn.query("Select Id,Name FROM Account") .on("record", function (record) { records.push(record); console.log(record.Id) let sql = 'INSERT INTO test_table VALUES (?,?)'; let data = [record.Id, record.Name] connection.query(sql, data, (err, res, fields) => { if (err) { return console.error(err.message); } console.log('Rows affected:', res.affectedRows); }) }) .on("end", function () { connection.end(function (err) { if (err) { return console.log('error:' + err.message); } console.log('Close the database connection.'); }); //console.log(records[0].Id); //console.log("total records is :" + query.totalSize); //console.log("total fetched is :" + query.totalFetched); }) .on("error", function (err) { console.log(err); }) .run({ autoFetch: true, maxFetch: 4000 }); }); }) //let sql = 'INSERT into test_db VALUES (xxx) '
С этим у вас должно получиться вот это.
Это не так уж и сложно!
Надеюсь, это так или иначе помогло вам! пожалуйста, поделитесь этим с друзьями, если у вас тоже есть эта проблема!