sqlite3:从命令行将模式转储到.sql文件中

时间:2016-08-08 15:12:16

标签: sql macos sqlite terminal

我正在尝试仅将test.db的架构(即没有数据)从OS X中的命令行转储到名为schema.sql的文件中,而不启动sqlite3。

我知道我能做到:

sqlite3
.open test.db
.output schema.sql
.schema
.quit

但我不想发布sqlite 3.这......

echo '.output schema.sql' | sqlite3 test.db

创建空文件但是......

echo '.schema' | sqlite3 test.db

仅打印架构。如何从终端将其写入该文件?

谢谢!

3 个答案:

答案 0 :(得分:19)

shell允许重定向,private void drawBackground(RecyclerView.ViewHolder viewHolder, float dX, int actionState) { if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) { Display display = getWindowManager().getDefaultDisplay(); Point screenSize = new Point(); display.getSize(screenSize); final View backgroundViewRight = ((ViewHolder) viewHolder).mSwipeBackgroundRight; final View backgroundViewLeft = ((ViewHolder) viewHolder).mSwipeBackgroundLeft; // Swiping Right if (dX > 0) { Log.d("right is", Integer.toString((int)Math.max(dX, 0))); backgroundViewRight.setRight((int) Math.max(dX, 0)); backgroundViewRight.setLeft(0); backgroundViewLeft.setRight(0); backgroundViewLeft.setLeft(0); } // Swiping Left else { // screenSize.x is the width of the screen Log.d("left is", Integer.toString((int)(screenSize.x + dX))); backgroundViewLeft.setRight(screenSize.x); backgroundViewLeft.setLeft((int)(screenSize.x + dX)); backgroundViewRight.setRight(0); backgroundViewRight.setLeft(0); } } } 可以将命令作为参数:

sqlite3

答案 1 :(得分:2)

想出来!我只需要在echo语句中转义文本:

echo -e '.output schema.sql\n.schema' | sqlite3 test.db

答案 2 :(得分:1)

仅供参考,你也可以做到

( echo .output schema.sql ; echo .schema ) | sqlite3 test.db

这是在子shell中运行两个echo命令并管理其输出。

或者

sqlite3 test.db <<EOF
.output schema.sql
.schema
EOF

请参阅How does "cat << EOF" work in bash?了解这是做什么的。